package cc.mrbird.system.service;

import cc.mrbird.common.domain.QueryRequest;
import cc.mrbird.common.service.IService;
import cc.mrbird.system.domain.ChartsModel;
import cc.mrbird.system.domain.Daliy;
import cc.mrbird.system.domain.DaliyDTO;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;

import java.text.ParseException;
import java.util.List;

/**
 * 日报信息
 */
@CacheConfig(cacheNames = "DaliyService")
public interface DaliyService  extends IService<Daliy> {
    /**
     * 获取日报的个人信息
     */
    DaliyDTO daliyMessage() throws ParseException;

    /**
     * 添加日报信息
     * @param daliyList 日报的信息
     * @param executioneFficiency 百分效率
     * @param reasonsforeFficiencyFailure 效率不达标原因
     * @return
     */
    Boolean adliyAdd(List<DaliyDTO> daliyList, String executioneFficiency, String reasonsforeFficiencyFailure);

    /**
     * 日报页面的展示
     * @param daliyDTO 搜索的信息
     * @param request 请求
     * @return 分页的数据
     */
    List<DaliyDTO> findDailyWithDept(DaliyDTO daliyDTO,QueryRequest request);

    /**
     * 数据隔离和搜索的数据
     * @param daliyDTO 搜索的信息
     * @return
     */
    DaliyDTO dailyWithDept(DaliyDTO daliyDTO);

    /**
     * 日报导出
     * @param daliyDTO 搜素的数据
     * @return
     */
    List<DaliyDTO> dailyShowExcel(DaliyDTO daliyDTO);

    /**
     * 获取项目信息
     */
    ChartsModel getChartsModel1();
    /**
     * 获取模块组信息
     */
    ChartsModel getChartsModel2();


    /**
     * 删除日报
     * @param id 根据id删除
     */
    int deleteDailyShow(String id);

    /**
     * 更新日报
     * @param daliy 修改日报信息
     * @return
     */
    @CacheEvict(key = "#p0", allEntries = true)
    int updateDaliy(Daliy daliy);

    /**
     * 判断是否当天日报是否添加
     * @param daliyDTO 用户信息
     * @return
     */
    Boolean ifDaliy(DaliyDTO daliyDTO);

    /**
     * 校验日期是否填写过日报
     * @param supplementDate 校验日期
     * @return
     */
    Boolean ifSupplement(String supplementDate);

    /**
     * 补录日报
     * @param daliyList 添加的日报 数组
     * @param executioneFficiency 效率
     * @param reasonsforeFficiencyFailure 效率不及格原因
     * @param supplementDate 补录日期
     * @return
     */
    Boolean supplementAdd(List<DaliyDTO> daliyList, String executioneFficiency, String reasonsforeFficiencyFailure, String supplementDate) throws ParseException;
}